#ifndef __FS_SUPER_BLOCK_H
#define __FS_SUPER_BLOCK_H
#include "../lib/stdint.h"

/* 超级块 */
struct super_block {
    uint32_t magic;     //用来标识文件系统类型，支持多文件系统的操作系统通过此标识文件识别文件系统类型
    uint32_t sec_cnt;   //本分区总共的扇区数
    uint32_t inode_cnt; //本分区中inode数量
    uint32_t part_lba_base; //本分区的起始lba地址

    uint32_t block_bitmap_lba;      //块位图本身起始扇区lba地址，也就是块位图的磁盘地址
    uint32_t block_bitmap_sects;    //块位图占的扇区数量
    
    uint32_t inode_bitmap_lba;      // inode 节点位图起始扇区lba地址，也就是i位图的磁盘地址
    uint32_t inode_bitmap_sects;    // inode 节点位图占的扇区数量

    uint32_t inode_table_lba;       // inode 节点表起始扇区lba地址
    uint32_t inode_table_sects;     // inode 节点表占用的扇区数量

    uint32_t data_start_lba;        // 数据区开始的第一个扇区号
    uint32_t root_inode_no;         // 根目录所在的 I 节点号
    uint32_t dir_entry_size;        // 一个目录项的大小

    uint8_t pad[460];               //加上460字节，凑够512字节，1扇区的大小 

}__attribute__((packed));

#endif